├OMPUTERS CAN SOLVE CHALLENGING PUZZLES, INCLUDING CHESS. ┴ SOMEWHAT LESS AMBITIOUS UNDERTAKING IS FOR A COMPUTER TO EXAMINE A PUZZLE. ╘╚┼ 15 ╨╒┌┌╠┼ IS AVAILABLE JUST ABOUT EVERYWHERE. ╔T IS MADE UP OF 16 SQUARES, ONE LEFT BLANK, 15 FILLED WITH SLIDING NUMBERS. ╘HE PURPOSE OF THE GAME IS TO ARRANGE THE NUMBERS INTO A PATTERN.
┘OU CAN SLIDE THE SQUARES IN THE STANDARD CONFIGURATION SO AS TO ACHIEVE THE ╟╧┴╠ PATTERN, WHILE OBSERVING ONE RULE: ANY ONE OF THE NUMBERS SURROUNDING A SPACE CAN BE MOVED INTO THE SPACE, AND NO OTHERS. ╬OT ALL PATTERNS CAN BE SOLVED . ╔N FACT, THE PUZZLE IS QUITE DIFFICULT. ╙O IT IS A NEAT IDEA TO BE ABLE TO DETERMINE BEFOREHAND IF THE PUZZLE CAN BE SOLVED AT ALL.
╘HE POINT OF LOOKING AT WHETHER A PATTERN IS FEASIBLE IS THAT THERE ARE 16! (16-FACTORIAL, THAT IS 1*2*3...*15*16) POSSIBLE SQUARE ARRANGEMENTS. ╧NE HALF OF THE PATTERNS HAVE NO SOLUTION AT ALL. ╘HE COMPUTER CAN TELL US IN A FEW SECONDS WHETHER THERE IS A SOLUTION. ╧NE WAY TO DO IT WAS DESCRIBED IN AN OLD MINI-TEXTBOOK, ╞╧╥╘╥┴╬ ┴╒╘╧╘┼╙╘┼╥ BY ╥. ╙MITH AND ─. ╩OHNSON (╩OHN ╫ILEY & ╙ONS, ╔NC., 1962). ╔ QUOTE:
// P123 COPY EXCEPT THE FIRST 2 LINES //
// P124 COPY EXCEPT THE BOTTOM 3 LINES //
╘HIS ┬┴╙╔├ PROGRAM PERMITS YOU TO SEE IF A DESIRED PATTERN CAN BE ACHIEVED. ╨ROGRAM DOES NOT SOLVE THE PUZZLE. ┘OU CAN DO THAT YOURSELF.
// PRG: THE 15 PUZZLE //
Ç*FP10
*** ╓┴╥╔┴┬╠┼╙ ***
╨() 4X4 PATTERN IN NUMERIC FORM
┌ COUNTS SUM OF NUMBERS IN POSITIONS
HIGHER-LETTERED THAN ITSELF
╙ CHECK NUMBER TO VERIFY TYPING
═$() MESSAGES
╓ WORKING VALUE
╩,╦ ROWS, COLUMNS
╠,═ ROWS, COLUMNS
*** ╔╬╙╘╥╒├╘╔╧╬╙ ***
╥╒╬ THE PROGRAM. ╔F THE NUMBERS IN ─┴╘┴ LINES DON'T MAKE SENSE (DUPLICATES, MISSING VALUES) THE PROGRAM SHOULD TELL YOU ABOUT IT.
╘HE PROGRAM REPORTS IF A SOLUTION IS POSSIBLE. ┘OU CAN THEN TRY TO SOLVE THE PUZZLE. ╘O CHECK IF ANOTHER SOLUTION IS POSSIBLE, REDO THE ─┴╘┴ LINES TO ANY PATTERN YOU WISH.
*** ─┼╘┴╔╠╙ ***
╘HE PART THAT DOES ALL THE WORK IS LINE 150 AND THE LOOPS IN LINES 170-200. ╚ERE, THE POSSIBLE COMPARISONS ARE PERFORMED AS WELL AS CHANGE OF THE POSITION OF THE BLANK SQUARE. ╘HE RESULT GOES INTO ┌, WHICH IS TESTED FOR BEING ODD WITH "┌ ┴╬─ 1" TYPE OF CODE. ╔N OUR CASE ┌ BECOMES 1, HENCE, ═$(1) IS PICKED UP ... NO SOLUTION IS POSSIBLE.
╘HE METHOD OF CHECKING THE SOLUTION IS DESCRIBED QUITE THOROUGHLY IN THE CITATIONS ABOVE. ╬OTE THAT WE USE FOUR "NESTED" LOOPS: THE INDEXES ╩ AND ╦ DEAL WITH ROW AND COLUMN POSITIONS OF A SQUARE (0,0 IS UPPER LEFT HAND CORNER; 0,3 IS THE UPPER RIGHT-HAND CORNER). ╘HE SAME IS TRUE FOR THE ╠ AND ═ INDEXES. ╠ AND ═ TRACK THE HYPOTHETICAL "MOVING" SQUARE ACROSS THE BOARD.
╔F YOU HAVE ANY DOUBTS ABOUT WHAT THE COMPUTER DOES AT EACH STEP, PLACE A ╙╘╧╨ INSTRUCTION INSIDE THE INNERMOST LOOP AND PRINT OUT ALL THE INDEXES (╔, ╩, ╦, ╠). ╘HIS WILL SHOW YOU PRECISELY WHICH SQUARES ARE BEING CONSIDERED AND TO WHICH SQUARES THEY ARE BEING COMPARED.
*** ╨╥╧╩┼├╘╙ ***
┴S MENTIONED IN THE ╔╬╙╘╥╒├╘╔╧╬╙, YOU CAN FEED THIS PROGRAM ANY PATTERN YOU WISH.
╘HE ┬┴╙╔├ KEYWORD "┴╬─" IS HANDY IN MANY THINGS. ╔T IS CALLED A LOGICAL OPERATOR. ├╧══╧─╧╥┼ ┬┴╙╔├ HAS THREE SUCH OPERATORS: ┴╬─, ╧╥ AND ╬╧╘. ╔T IS WORTHWILE TO LOOK AT THEM IN THE MANUAL. ╘HEY FUNCTION DIFFERENTLY FROM MANY OTHER COMPUTERS, SO IF YOU HAVE WORKED WITH ANOTHER COMPUTER IT IS A GOOD IDEA TO CHECK UP ON THE DETAILS OF HOW ├╧══╧─╧╥┼ WORKS THEM.